As part of the Current Population Survey, the US Census Bureau conducts an annual Displaced Worker Supplement in which workers who have lost their job in the last three years are asked additional questions about their unemployment experiences and (if re-employed) their re-employment conditions.

From link above: “The universe for the Displaced Workers Supplement is civilians 20 or older. Respondents are further categorized as a”displaced worker” if they meet additional characteristics (see DWSTAT). After 1998, displaced workers are those who lost or left a job due to layoffs or shutdowns within the past 3 years…were not self-employed, and did not expect to be recalled to work within the next six months.

The data used below is from annual survey responses between 2000-2025. I use the supplement sample weights in all results below. I note where I have clipped the sample for outliers (wage ratio between [0.25, 2] and unemployment duration less than 96 weeks (~24 months).

Below I:

  1. Data Cleaning Procedure: Show data cleaning just for reference (feel free to ignore)!.
  2. Descriptives: Show some descriptives about the data itself.
  3. Regression Results on Non-Uniform Sample: Regression results with ratio of new wage to wage at the lost job (\(W_{h}\) and \(W_{w}\)) regressed (cross-sectionally) on unemployment duration with and without various combinations of control variables (whether or not an individual received unemployment compensation, age, race, sex, marital status, education, previous wage level. ) Note that the wages are reported in hourly and weekly values but. this reporting is inconsistent across observations. In other words, though most individuals (4600/6198) report their wage in both units, 270 report only hourly and 1328 report only weekly. I have not reconciled the inconsistency so I use hourly wage ratios in majority of the below document. I could try to reconcile this.
  4. Outline some considerations for further improvement of the analysis:
    1. Reweighted Samples: The sample is non-uniform in unemployment duration (less observations as unemployment duration increases). Try two methods of reweighting to address selection issues (Heckman Selection correction - though I think this is inappropriate for this particular selection issue) and non-uniform (entropy-balancing to deal with representativeness of population over unemployment durations) sample confirm regression results in non-uniform sample.
    2. Representativeness of the Sample (Education, Age, Gender, and Wage): Representativeness of the data to motivate data limitations and inform the ultimate reweighting scheme.

Overall result (at the moment): Individuals accept a ~1-percentage point change in the wage ratio per additional month of unemployment. Variations using model reweighting, different samples, combinations of control variables, reported hourly and weekly wage ratios do not seem to affect the result. However, the data seems to follow a non-linear relationship (we see little satisficing until around ~12 months of unemployment) after which the wage ratio begins to decrease. Individuals seem to accept a below-1 relative wage ratio (current wage:wage at lost job) following a year of unemployment. If we fit this model with a quadratic fit this could inform our reservation wage adjustment parameter in the model.

Important Considerations/Limitations:

  1. Displaced worker classification as outlined above. Can we generalise from this definition to all unemployed workers?
  2. The reported ‘current wage’ is not necessarily the the realised wage post-re-employment. Individuals report the wage at the lost job, the amount of time unemployed until they were re-employed, and the wage they hold at their current job. However, it is not indicated whether the current job is the same job as the first they were re-employed at. Given various comments in the literature about finding “stop-gap” employment, this might not be a problem in the sense that the “current wage” would more accurately indicate the wage an individual has “landed” at post-unemployment spell. But curious what you think about the defensibility of this.
  3. Outcome variable: How do we feel about the outcome variable as the ratio of current to latest held job? Might we want to take the log or consider simply the (log) level regressed on the previous wage. Wondering if a ratio-based outcome variable might muddle interpretation. Curious for your reactions.

Data cleaning

Feel free to ignore this code chunk immediately below - included for now for transparency in case you spot issues. I include it for your info on binning and outlier trimming.

# From the original dataset, I include only those that reported having lost a FT job in the last three years
df <- readRDS(here("data/behav_params/cps_displaced_worker_supplement/cps_disp_filtered.RDS")) %>% 
  select(hwtfinl, cpsid, wtfinl, age, sex, race, marst, educ, # age, sex, race, marital status, educational attainment
         dwsuppwt, # Survey weight
         dwyears, # Years worked at lost job
         dwben, # Received unemployment benefits
         dwexben, # Exhausted unemployment benefits
         dwlastwrk, # Time since worked at last job
         dwweekc, # Weekly earnings at current job
         dwweekl, # Weekly earnings at lost job
         dwwagel, # Hourly earnings at lost job
         dwwagec, # Hourly wage at current job
         dwhrswkc, # Hours worked each week at current job
         dwresp, # Eligibility and interview status for Displaced Worker Supplement
         # Interestingly the unemployment duration is not directly linked to CURRENT job and we cannot see the wage of the start of the next job...thought this feels problematic, it does indicate more accurately the ultimate "recovered" wage...will need to declare as a limitation but also not completely indefensible
         dwwksun) %>%  # Number of weeks not working between between end of lost or left job and start of next job
  # I remove anyone who is Not in Universe (99) and declaring greater than 160 weeks unemployed between jobs
filter(dwhrswkc != 99 & dwwksun <= 160) %>% 
  # Replacing NIU values with NA values
  mutate(dwwagel = ifelse(round(dwwagel) == 100, NA, dwwagel),
         dwwagec = ifelse(round(dwwagec) == 100, NA, dwwagec),
         dwweekl = ifelse(round(dwweekl) == 10000, NA, dwweekl),
         dwweekc = ifelse(round(dwweekc) == 10000, NA, dwweekc),
         # dwwage_rec_l = ifelse(is.na(dwagel) & !is.na(dweekl) ~ dwweekl),
         # dwweekc = ifelse(round(dwweekc) == 10000, NA, dwweekc),
         # Binning educational categories
         educ_cat = factor(case_when(educ %in% c(1) ~ NA, # (NIU)
                              educ > 1 & educ <= 71 ~ "Less than HS", # Includes "None" - Grade 12 no diploma (8 subcategories (grade 1-11 etc))
                              educ %in% c(73, 81) ~ "HS Diploma", # Includes "High school Diploma or equivalent" and "some college, but no degree"
                              educ %in% c(91, 92) ~ "Associate's", # Include "[Associate's degree, occupational/vocational program]" and "Associate's         [Associate's degree, academic program]"
                              educ %in% c(111) ~ "Bachelor's", # Bachelor's degree
                              educ > 111 ~ "Postgraduate Degree" # Includes Master's, Professional School, and Doctorate degree
                              ), , levels = c("Less than HS", "HS Diploma", "Associate's", "Bachelor's", "Postgraduate Degree")),
         # Marital status to binary indicator
         marst = case_when(marst == 1 ~ 1, # Married with a present spouse
                           # Might consider dividing this differently
                           TRUE ~ 0), # Married with absent spouse, separated, divorced, widowed, never married/single
         # gender to 0,1 values
         female = sex == 2,
         # race to higher-level categories w binary values
         white = race == 100,
         black = race == 200,
         mixed = race %in% c(801, 802, 803, 804, 805, 806, 810, 812, 813, 820, 830),
         aapi = race %in% c(650, 651, 652, 808, 809),
         native = race == 300
         # age is a continuous variable which seems fine for now...binning likely unnecessary
         ) %>% 
        # Ratio of hourly wage of current job to lost job
  mutate(ratio_wage = dwwagec/dwwagel,
         # Ratio of weekly wage of current job to lost job
         ratio_weekly = dwweekc/dwweekl,
         # Reconciling missing reporting between weekly and hourly wage. Take either the min, max or mean value. 
         ratio_reconciled_min = case_when(is.na(ratio_wage) ~ ratio_weekly, 
                                          is.na(ratio_weekly) ~ ratio_wage, 
                                          TRUE ~ pmin(ratio_weekly, ratio_wage)), 
         ratio_reconciled_max = case_when(is.na(ratio_wage) ~ ratio_weekly, 
                                          is.na(ratio_weekly) ~ ratio_wage, 
                                          TRUE ~ pmax(ratio_weekly, ratio_wage)), 
         ratio_reconciled_mean = case_when(is.na(ratio_wage) ~ ratio_weekly, 
                                          is.na(ratio_weekly) ~ ratio_wage, 
                                          TRUE ~ rowMeans(across(c(ratio_wage, ratio_weekly)), na.rm = TRUE)), 
         # Create monthly unemployment duration for continuous
         dwmosun = floor(dwwksun/4),
         dwmosun2 = dwmosun^2,
         dwmosun3 = dwmosun^3,
         # Unemployment duration (reported as time between lost job and start of next job)
         # I bin in...
         # monthly intervals (4 weeks) from 1-6 months
         # quarterly intervals (12 weeks) from 7 mos-1 year
         # half-year interval from 1-2.5 years
         # single bin for anyone about 120 weeks
         dwwksun_bin = case_when(
           # Monthly intervals (4 weeks) from 1-6 months
           dwwksun <= 4 ~ 1, #"Less than 4 weeks",
                                 dwwksun > 4 & dwwksun <= 8 ~ 2,
                                 dwwksun > 8 & dwwksun <= 12 ~ 3,
                                 dwwksun > 12 & dwwksun <= 16 ~ 4, 
                                 dwwksun > 16 & dwwksun <= 20 ~ 5,
                                 dwwksun > 20 & dwwksun <= 24 ~ 6,
                                 # Quarterly Intervals (12 weeks) from 6+ mos - 1 year
                                 dwwksun > 24 & dwwksun <= 36 ~ 7,
                                 dwwksun > 36 & dwwksun <= 48 ~ 8, 
                                 # Half-year Intervals (24 weeks) from 1-2.5 years
                                 dwwksun > 48 & dwwksun <= 72 ~ 9, 
                                 dwwksun > 72 & dwwksun <= 96 ~ 10, 
                                 dwwksun > 96 & dwwksun <= 120 ~ 11, 
                                 # Anyone above - recall this is capped at 160 weeks as per filter above
                                 dwwksun > 120 ~ 12),
         # Bin labels
         dwwksun_bin_labs = case_when(dwwksun_bin == 1 ~ "<= 1 mo.", #"Less than 4 weeks",
                                 dwwksun_bin == 2 ~ "1-2 mos.",
                                 dwwksun_bin == 3 ~ "2-3 mos.",
                                 dwwksun_bin == 4 ~ "3-4 mos.", 
                                 dwwksun_bin == 5 ~ "4-5 mos.",
                                 dwwksun_bin == 6 ~ "5-6 mos.",
                                 # Quarterly Intervals (12 weeks) from 6+ mos - 1 year
                                 dwwksun_bin == 7 ~ "6-9 mos.",
                                 dwwksun_bin == 8 ~ "9-12 mos.", 
                                 # Half-year Intervals (24 weeks) from 1-2.5 years
                                 dwwksun_bin == 9 ~ "12-18 mos.", 
                                 dwwksun_bin == 10 ~ "18-24 mos.", 
                                 dwwksun_bin == 11 ~ "24-30 mos.", 
                                 # Anyone above - recall this is capped at 160 weeks as per filter above
                                 dwwksun_bin == 12 ~ "30+ mos."),
         log_ratio_wage = log(ratio_wage),
         log_ratio_weekly = log(ratio_weekly),
         # I clip the sample to an accepted wage ratio between [0.5, 2] and less than 96 weeks of unemployment
         clipped_sample_hwage = ratio_wage >= 0.5 & ratio_wage <= 2 & dwwksun_bin < 11,
         clipped_sample_wwage = ratio_weekly >= 0.5 & ratio_weekly <= 2  & dwwksun_bin < 11,
         clipped_sample_rec_min = ratio_reconciled_min >= 0.5 & ratio_reconciled_min <= 2 & dwwksun_bin < 11,
         clipped_sample_rec_max = ratio_reconciled_max >= 0.5 & ratio_reconciled_max <= 2 & dwwksun_bin < 11,
         clipped_sample_rec_mean = ratio_reconciled_mean >= 0.5 & ratio_reconciled_mean <= 2 & dwwksun_bin < 11)

Descriptives

All descriptives below use the Displaced Worker Sample Weights.

Histogram: sample is skewed (see reweighting alternatives at end of document).

Box plots: Looking at the reported wage ratios in weekly and hourly values, the mean is fixed near 1 until >12 mos of unemployment in hourly wage reporting. In weekly wage reporting, the “satisficing” seems to start earlier in unemployment duration (sample size is larger for weekly reporting - might be worth focusing on those wages).

Scatter plot: I fit a linear and spline fit to the scatted plot of the wage ratio to unemployment duration before using the regression. Indicates decline in the wage ratio with unemployment duration that has a potentially non-linear fit.

Regressions (non-uniform sample)

Next, (ignoring for now the non-uniformity of the sample ie. that there are less observations present for higher unemployment durations) I run the following regression (with various modifications to sample and control variables). \(W_{i} = \alpha_{i} + \beta_{1} d_{i} + \beta_{2}UI_{i} + \beta_{3}X_{i} + \epsilon_{i}\)

where \(W_{i}\): Ratio of accepted wage to wage at lost job (hourly values).

\(d_{i}\): Unemployment duration (continuous or binned).

\(UI_{i}\): Control variable for having used or exhausted unemployment benefits.

\(X_{i}\): Vector of control variables (sex, age, race (white, black, mixed), marital status (married or not), whether individual used UI benefits, whether individual exhausted UI benefits, education level, and previous wage level).

There are 48 models present with all combinations of the following:

I include the full set of coefficients (again, apologies for verbose output) in case you find the coefficients on the controls interesting (I think the coefficient on age and holding a Bachelor’s degree particularly interesting). But I highlight in blue our main interest in \(\beta_{1}\).

Across all models in the tabs below we see a consistently negative coefficient on unemployment duration (~0.7-1 percentage point increase in the wage ratio for each additional month spent in unemployment). If we look more closely at the performance of our model with continuous unemployment duration, UI use (not exhaustion), all controls, wage levels, and outlier correction we see that the model performs fairly well across various diagnostic tests.

## [1] "Continuous U Duration. w. UI Control w. demographic controls (clipped sample)"

Continuous UE Duration

Continuous UE duration treatment is reported in monthly values. A one-unit increase in the treatment variable = 1 additional month of unemployment.

W.O. Wage Level Control

Continuous UE Duration w.o Wage Level Control
Cont. Cont. (clipped) Cont. w. UI Cont. w. UI (clipped) Cont. w. exhausted UI Cont. w. exhausted UI (clipped) Cont. Sq Cont. Sq (clipped) Cont. Sq w. UI Cont. Sq w. UI (clipped) Cont. Sq w. exhausted UI Cont. Sq w. exhausted UI (clipped) Cont. w. controls Cont. w. controls (clipped) Cont. w. UI w. controls Cont. w. UI w. controls (clipped) Cont. w. exhausted UI w. controls Cont. w. exhausted UI w. controls (clipped) Cont. Sq w. controls Cont. Sq w. controls (clipped) Cont. Sq w. UI w. controls Cont. Sq w. UI w. controls (clipped) Cont. Sq w. exhausted UI w. controls Cont. Sq w. exhausted UI w. controls (clipped)
Intercept 1.053*** 1.045*** 1.053*** 1.045*** 1.006*** 1.006*** 1.055*** 1.046*** 1.055*** 1.046*** 1.002*** 1.001*** 1.180*** 1.163*** 1.180*** 1.163*** 1.119*** 1.113*** 1.180*** 1.163*** 1.180*** 1.163*** 1.116*** 1.108***
(0.006) (0.004) (0.006) (0.004) (0.010) (0.007) (0.007) (0.005) (0.007) (0.005) (0.011) (0.008) (0.031) (0.021) (0.031) (0.021) (0.033) (0.023) (0.031) (0.021) (0.031) (0.021) (0.033) (0.023)
Unemployment Duration (Months) -0.007*** -0.006*** -0.007*** -0.006*** -0.005*** -0.004*** -0.009*** -0.007** -0.009*** -0.007** -0.003 -0.001 -0.006*** -0.006*** -0.006*** -0.006*** -0.004*** -0.004*** -0.008** -0.006** -0.008** -0.006** -0.003 -0.001
(0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.002) (0.002) (0.002) (0.002) (0.003) (0.002) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.002) (0.002) (0.002) (0.002) (0.003) (0.002)
Received Unemployment Compensation -0.000 0.000 -0.000 0.000 0.000 0.000 0.000 0.000
(0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001)
Exhausted Unemployment Compensation 0.001*** 0.001*** 0.001*** 0.001*** 0.001*** 0.000*** 0.001*** 0.001***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
dwmosun2 0.000 0.000 0.000 0.000 -0.000 -0.000 0.000 0.000 0.000 0.000 -0.000 -0.000
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
Female 0.003 -0.003 0.003 -0.003 0.003 -0.003 0.003 -0.003 0.003 -0.003 0.003 -0.003
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
Age -0.003*** -0.002*** -0.003*** -0.002*** -0.003*** -0.002*** -0.003*** -0.002*** -0.003*** -0.002*** -0.003*** -0.002***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
White -0.035 -0.052** -0.035 -0.052** -0.033 -0.051** -0.035 -0.052** -0.035 -0.052** -0.033 -0.051**
(0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016)
Black -0.048+ -0.057** -0.048+ -0.057** -0.045+ -0.055** -0.048+ -0.057** -0.048+ -0.057** -0.045+ -0.056**
(0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018)
Mixed 0.014 -0.070** 0.014 -0.070* 0.017 -0.068* 0.014 -0.070** 0.014 -0.070* 0.016 -0.068*
(0.040) (0.027) (0.040) (0.027) (0.040) (0.027) (0.040) (0.027) (0.040) (0.027) (0.040) (0.027)
Married 0.005 0.011 0.005 0.011 0.005 0.012+ 0.005 0.011 0.005 0.011 0.005 0.012+
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
High School 0.005 0.001 0.005 0.001 0.011 0.005 0.006 0.001 0.006 0.001 0.011 0.005
(0.016) (0.011) (0.016) (0.011) (0.016) (0.011) (0.016) (0.011) (0.016) (0.011) (0.016) (0.011)
educ_catAssociate's 0.032 -0.009 0.032 -0.009 0.038+ -0.005 0.032 -0.009 0.032 -0.009 0.037+ -0.005
(0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014)
Bachelor's Degree 0.079*** 0.066*** 0.079*** 0.066*** 0.085*** 0.070*** 0.080*** 0.066*** 0.080*** 0.066*** 0.084*** 0.070***
(0.021) (0.015) (0.021) (0.015) (0.021) (0.015) (0.021) (0.015) (0.021) (0.015) (0.021) (0.015)
Postgraduate Degree 0.114* 0.030 0.114* 0.030 0.122** 0.037 0.115* 0.030 0.115* 0.030 0.122** 0.037
(0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031)
Num.Obs. 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644
R2 0.009 0.012 0.009 0.012 0.017 0.022 0.010 0.012 0.010 0.012 0.017 0.023 0.025 0.032 0.025 0.032 0.030 0.040 0.025 0.032 0.025 0.032 0.030 0.040
R2 Adj. 0.009 0.012 0.009 0.011 0.016 0.022 0.009 0.011 0.009 0.011 0.016 0.022 0.022 0.029 0.022 0.029 0.028 0.037 0.022 0.029 0.022 0.029 0.027 0.038
F 46.344 23.169 41.487 23.546 15.694 27.802 11.151 10.220 12.521 10.252 9.462 11.589
RMSE 0.38 0.24 0.38 0.24 0.37 0.24 0.38 0.24 0.38 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

W. Wage Level Control

Continuous UE Duration w. Wage Level Control
Cont. Cont. (clipped) Cont. w. UI Cont. w. UI (clipped) Cont. w. exhausted UI Cont. w. exhausted UI (clipped) Cont. Sq Cont. Sq (clipped) Cont. Sq w. UI Cont. Sq w. UI (clipped) Cont. Sq w. exhausted UI Cont. Sq w. exhausted UI (clipped) Cont. w. controls Cont. w. controls (clipped) Cont. w. UI w. controls Cont. w. UI w. controls (clipped) Cont. w. exhausted UI w. controls Cont. w. exhausted UI w. controls (clipped) Cont. Sq w. controls Cont. Sq w. controls (clipped) Cont. Sq w. UI w. controls Cont. Sq w. UI w. controls (clipped) Cont. Sq w. exhausted UI w. controls Cont. Sq w. exhausted UI w. controls (clipped)
Intercept 1.185*** 1.131*** 1.186*** 1.130*** 1.145*** 1.094*** 1.186*** 1.131*** 1.187*** 1.131*** 1.141*** 1.090*** 1.263*** 1.217*** 1.263*** 1.217*** 1.213*** 1.173*** 1.263*** 1.217*** 1.263*** 1.217*** 1.210*** 1.169***
(0.011) (0.008) (0.011) (0.008) (0.014) (0.010) (0.012) (0.008) (0.012) (0.008) (0.015) (0.011) (0.031) (0.021) (0.031) (0.021) (0.033) (0.022) (0.031) (0.021) (0.031) (0.021) (0.033) (0.023)
Hourly Wage of Lost Job -0.009*** -0.006*** -0.009*** -0.006*** -0.009*** -0.006*** -0.009*** -0.006*** -0.009*** -0.006*** -0.009*** -0.006*** -0.011*** -0.007*** -0.011*** -0.007*** -0.011*** -0.007*** -0.011*** -0.007*** -0.011*** -0.007*** -0.011*** -0.007***
(0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000)
Unemployment Duration (Months) -0.007*** -0.006*** -0.007*** -0.006*** -0.005*** -0.004*** -0.007** -0.006** -0.007** -0.006** -0.003 -0.002 -0.006*** -0.006*** -0.006*** -0.006*** -0.005*** -0.004*** -0.007** -0.006** -0.007** -0.006** -0.003 -0.002
(0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.002) (0.002) (0.002) (0.002) (0.003) (0.002) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.002) (0.002) (0.002) (0.002) (0.003) (0.002)
Received Unemployment Compensation -0.000 0.000 -0.000 0.000 -0.000 0.000 -0.000 0.000
(0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001) (0.001)
Exhausted Unemployment Compensation 0.001*** 0.000*** 0.001*** 0.000*** 0.000*** 0.000*** 0.000*** 0.000***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
dwmosun2 0.000 0.000 0.000 0.000 -0.000 -0.000 0.000 0.000 0.000 0.000 -0.000 -0.000
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
Female -0.028** -0.023** -0.028** -0.023** -0.028** -0.023** -0.028** -0.023** -0.028** -0.023** -0.028** -0.023**
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
Age -0.002*** -0.001*** -0.002*** -0.001*** -0.001*** -0.001*** -0.002*** -0.001*** -0.002*** -0.001*** -0.001*** -0.001***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
White -0.034 -0.050** -0.034 -0.050** -0.032 -0.049** -0.034 -0.050** -0.034 -0.050** -0.032 -0.050**
(0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016) (0.023) (0.016)
Black -0.058* -0.061*** -0.058* -0.061*** -0.055* -0.060*** -0.057* -0.061*** -0.057* -0.061*** -0.055* -0.060***
(0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018) (0.026) (0.018)
Mixed 0.016 -0.067* 0.016 -0.067* 0.019 -0.065* 0.016 -0.067* 0.016 -0.067* 0.018 -0.066*
(0.039) (0.027) (0.039) (0.027) (0.039) (0.026) (0.039) (0.027) (0.039) (0.027) (0.039) (0.026)
Married 0.013 0.018* 0.013 0.018* 0.013 0.018* 0.013 0.018* 0.013 0.018* 0.014 0.018*
(0.010) (0.007) (0.010) (0.007) (0.010) (0.007) (0.010) (0.007) (0.010) (0.007) (0.010) (0.007)
High School 0.033* 0.019+ 0.033* 0.019+ 0.037* 0.022* 0.033* 0.019+ 0.033* 0.019+ 0.037* 0.022*
(0.015) (0.011) (0.015) (0.011) (0.015) (0.011) (0.015) (0.011) (0.015) (0.011) (0.015) (0.011)
educ_catAssociate's 0.084*** 0.027+ 0.084*** 0.027+ 0.088*** 0.029* 0.084*** 0.027+ 0.084*** 0.027+ 0.087*** 0.030*
(0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014) (0.021) (0.014)
Bachelor's Degree 0.161*** 0.121*** 0.161*** 0.121*** 0.164*** 0.123*** 0.161*** 0.121*** 0.161*** 0.121*** 0.163*** 0.123***
(0.022) (0.015) (0.022) (0.015) (0.022) (0.015) (0.022) (0.015) (0.022) (0.015) (0.022) (0.015)
Postgraduate Degree 0.244*** 0.120*** 0.244*** 0.120*** 0.248*** 0.123*** 0.245*** 0.120*** 0.245*** 0.120*** 0.248*** 0.123***
(0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031) (0.045) (0.031)
Num.Obs. 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644
R2 0.048 0.046 0.048 0.046 0.052 0.053 0.048 0.046 0.048 0.046 0.052 0.053 0.069 0.073 0.069 0.073 0.073 0.079 0.069 0.073 0.069 0.073 0.073 0.079
R2 Adj. 0.047 0.046 0.047 0.046 0.051 0.053 0.047 0.046 0.047 0.045 0.051 0.053 0.067 0.071 0.067 0.071 0.070 0.077 0.067 0.071 0.067 0.071 0.070 0.077
F 121.551 81.034 88.352 81.047 60.784 66.451 30.216 27.890 29.347 27.893 25.899 27.287
RMSE 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.23 0.37 0.23 0.37 0.23 0.37 0.23 0.37 0.23 0.37 0.23
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Binned UE Duration

Binned UE duration treatment is reported in bins as indicated in the box plots and code cleaning above.

W.O. Wage Level Control

Binned UE Duration w.o Wage Level Control
Disc. Disc. (clipped) Disc. w. UI Disc. w. UI (clipped) Disc. w. exhausted UI Disc. w. exhausted UI (clipped) Disc. w. controls Disc. w. controls (clipped) Disc. w. UI w. controls Disc. w. UI w. controls (clipped) Disc. w. exhausted UI w. controls Disc. w. exhausted UI w. controls (clipped)
Intercept 1.069*** 1.055*** 1.069*** 1.055*** 1.016*** 1.010*** 1.190*** 1.170*** 1.190*** 1.170*** 1.127*** 1.116***
(0.008) (0.005) (0.008) (0.005) (0.012) (0.008) (0.031) (0.021) (0.031) (0.021) (0.034) (0.023)
Unemployment Duration (Binned) -0.013*** -0.009*** -0.013*** -0.009*** -0.008*** -0.005*** -0.011*** -0.008*** -0.011*** -0.008*** -0.007*** -0.005***
(0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001)
Received Unemployment Compensation -0.000 0.000 0.000 0.000
(0.001) (0.001) (0.001) (0.001)
Exhausted Unemployment Compensation 0.001*** 0.001*** 0.001*** 0.001***
(0.000) (0.000) (0.000) (0.000)
Female 0.003 -0.003 0.003 -0.003 0.003 -0.003
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
Age -0.003*** -0.002*** -0.003*** -0.002*** -0.003*** -0.002***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
White -0.035 -0.052** -0.035 -0.052** -0.033 -0.050**
(0.023) (0.016) (0.023) (0.016) (0.023) (0.016)
Black -0.047+ -0.056** -0.047+ -0.056** -0.045+ -0.055**
(0.026) (0.018) (0.026) (0.018) (0.026) (0.018)
Mixed 0.014 -0.070** 0.014 -0.070* 0.017 -0.068*
(0.040) (0.027) (0.040) (0.027) (0.040) (0.027)
Married 0.004 0.011 0.004 0.011 0.005 0.012
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
High School 0.006 0.001 0.006 0.001 0.012 0.005
(0.016) (0.011) (0.016) (0.011) (0.016) (0.011)
educ_catAssociate's 0.033 -0.009 0.033 -0.009 0.038+ -0.005
(0.021) (0.014) (0.021) (0.014) (0.021) (0.014)
Bachelor's Degree 0.082*** 0.067*** 0.082*** 0.067*** 0.087*** 0.071***
(0.021) (0.015) (0.021) (0.015) (0.021) (0.015)
Postgraduate Degree 0.116** 0.030 0.116** 0.030 0.124** 0.038
(0.045) (0.031) (0.045) (0.031) (0.045) (0.031)
Num.Obs. 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644
R2 0.010 0.011 0.010 0.011 0.016 0.021 0.025 0.031 0.025 0.031 0.030 0.039
R2 Adj. 0.009 0.011 0.009 0.010 0.016 0.021 0.022 0.028 0.022 0.028 0.027 0.036
F 47.638 23.816 40.199 11.165 10.232 12.314
RMSE 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.24
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

W. Wage Level Control

Binned UE Duration w. Wage Level Control
Disc. Disc. (clipped) Disc. w. UI Disc. w. UI (clipped) Disc. w. exhausted UI Disc. w. exhausted UI (clipped) Disc. w. controls Disc. w. controls (clipped) Disc. w. UI w. controls Disc. w. UI w. controls (clipped) Disc. w. exhausted UI w. controls Disc. w. exhausted UI w. controls (clipped)
Intercept 1.198*** 1.139*** 1.199*** 1.139*** 1.154*** 1.098*** 1.272*** 1.224*** 1.272*** 1.224*** 1.220*** 1.176***
(0.012) (0.008) (0.012) (0.008) (0.016) (0.011) (0.031) (0.021) (0.031) (0.021) (0.034) (0.023)
Hourly Wage of Lost Job -0.009*** -0.006*** -0.009*** -0.006*** -0.009*** -0.006*** -0.011*** -0.007*** -0.011*** -0.007*** -0.011*** -0.007***
(0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000) (0.001) (0.000)
Unemployment Duration (Binned) -0.011*** -0.009*** -0.011*** -0.009*** -0.008*** -0.005*** -0.011*** -0.008*** -0.010*** -0.008*** -0.007*** -0.005***
(0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001) (0.002) (0.001)
Received Unemployment Compensation -0.000 0.000 -0.000 -0.000
(0.001) (0.001) (0.001) (0.001)
Exhausted Unemployment Compensation 0.000*** 0.000*** 0.000*** 0.000***
(0.000) (0.000) (0.000) (0.000)
Female -0.028** -0.023** -0.028** -0.023** -0.028** -0.023**
(0.011) (0.007) (0.011) (0.007) (0.011) (0.007)
Age -0.002*** -0.001*** -0.002*** -0.001*** -0.001*** -0.001***
(0.000) (0.000) (0.000) (0.000) (0.000) (0.000)
White -0.034 -0.050** -0.034 -0.050** -0.032 -0.049**
(0.023) (0.016) (0.023) (0.016) (0.023) (0.016)
Black -0.057* -0.061*** -0.057* -0.061*** -0.054* -0.059***
(0.026) (0.018) (0.026) (0.018) (0.026) (0.018)
Mixed 0.017 -0.067* 0.017 -0.067* 0.019 -0.065*
(0.039) (0.027) (0.039) (0.027) (0.039) (0.026)
Married 0.013 0.017* 0.013 0.017* 0.013 0.018*
(0.010) (0.007) (0.010) (0.007) (0.010) (0.007)
High School 0.034* 0.019+ 0.034* 0.019+ 0.038* 0.022*
(0.015) (0.011) (0.015) (0.011) (0.015) (0.011)
educ_catAssociate's 0.085*** 0.027+ 0.085*** 0.027+ 0.088*** 0.030*
(0.021) (0.014) (0.021) (0.014) (0.021) (0.014)
Bachelor's Degree 0.163*** 0.122*** 0.163*** 0.122*** 0.166*** 0.124***
(0.022) (0.015) (0.022) (0.015) (0.022) (0.015)
Postgraduate Degree 0.246*** 0.120*** 0.246*** 0.120*** 0.250*** 0.124***
(0.045) (0.031) (0.045) (0.031) (0.045) (0.031)
Num.Obs. 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644 4870 4644
R2 0.047 0.045 0.047 0.045 0.051 0.052 0.069 0.072 0.069 0.072 0.072 0.078
R2 Adj. 0.047 0.045 0.047 0.045 0.050 0.051 0.067 0.070 0.067 0.070 0.070 0.076
F 120.632 80.422 86.995 30.090 27.774 29.084
RMSE 0.37 0.24 0.37 0.24 0.37 0.24 0.37 0.23 0.37 0.23 0.37 0.23
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Additional Considerations

Below I:

  1. Show results from some sample reweighting to address the non-uniformity of our cross-sectional data.
  2. Histogram of an additional explanatory variable that might be interesting - the tenure of the lost job. How long (in years) did the individual hold the job they lost.
  3. Additionally, I show some rough graphs/figures about the sample population (age, education, gender, wage distributions). I am still working on an occupational distribution graph to understand the “skills”/occupational distribution of the sample.

Selection Issues with Non-Random Sample

NOTE: Skip ahead to “Regression Results with Sample Reweighting for Regression Results if you don’t wish to look at the reweighting details below.

One of the challenges with this data is that the sample grows significantly smaller for higher reported of unemployment duration (see scatter plots in Descriptives section). One option is a sample reweighting (beyond the census weights) to ensure population similarity across bins (below I choose GLM propensity score matching & entropy-balancing) or a Heckman Selection. Again, I include the code below (apologies for verbose output), mainly because I am not yet 100% sure of the implementation as I have never implemented such sample correction in a cross-sectional study). Open to suggestions and corrections :)

Conclusion: With this implementation (which may very well be wrong for now!), the coefficients on unemployment duration remain stable.

# Dataframe needed for predictions

newdata <- data.frame(
  dwmosun = seq(0, 24, by = 1),  # months of unemployment
  female = as.logical(round(mean(df$female))),                   # male
  age = median(df$age, na.rm = TRUE),
  white = as.logical(round(mean(df$white))),
  black = as.logical(round(mean(df$black))),
  mixed = as.logical(round(mean(df$mixed))),
  marst = round(mean(df$marst)),
  educ_cat = factor("HS Diploma", levels = levels(df$educ_cat))
) %>% 
  mutate(dwmosun2 = dwmosun^2,
         dwmosun3 = dwmosun^3)

Entropy Balancing

Entropy balancing simply reweights observations to ensure population matching across the key dependent variable.

# Apply entropy balancing using dwsuppwt sample weights
# Reweight according to observable characteristics using "ebalance" 
eb <- weightit(
  formula = dwmosun ~ female + age + white + black + mixed + marst + educ_cat,
  data = df,
  method = "ebalance",
  s.weights = df$dwsuppwt
)

# All covariates are balanced at the mean with tight threshold
bal.tab(eb, stats = c("m", "v"), thresholds = c(m = .001))
## Balance Measures
##                                 Type Diff.Target.Adj      M.Threshold
## female                        Binary          0.0000 Balanced, <0.001
## age                          Contin.         -0.0000 Balanced, <0.001
## white                         Binary         -0.0000 Balanced, <0.001
## black                         Binary         -0.0000 Balanced, <0.001
## mixed                         Binary          0.0001 Balanced, <0.001
## marst                         Binary         -0.0000 Balanced, <0.001
## educ_cat_Less than HS         Binary         -0.0000 Balanced, <0.001
## educ_cat_HS Diploma           Binary         -0.0000 Balanced, <0.001
## educ_cat_Associate's          Binary         -0.0000 Balanced, <0.001
## educ_cat_Bachelor's           Binary         -0.0000 Balanced, <0.001
## educ_cat_Postgraduate Degree  Binary          0.0001 Balanced, <0.001
## 
## Balance tally for target mean differences
##                      count
## Balanced, <0.001        11
## Not Balanced, >0.001     0
## 
## Variable with the greatest target mean difference
##  Variable Diff.Target.Adj      M.Threshold
##     mixed          0.0001 Balanced, <0.001
## 
## Effective sample sizes
##              Total
## Unadjusted 4747.86
## Adjusted   4634.14
# Add the new weights to the dataframe
df$eb_weight <- eb$weights

# Run weighted linear regression using entropy-balanced weights
mod_eb_reweight <- lm(
  formula = ratio_wage ~ dwmosun + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = eb_weight
)

mod_eb_reweight2 <- lm(
  formula = ratio_wage ~ dwmosun + dwmosun2 + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = eb_weight
)

mod_eb_reweight3 <- lm(
  formula = ratio_wage ~ dwmosun + dwmosun2 + dwmosun3 + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = eb_weight
)


# Extract prediction intervals as data frames
eb_preds  <- as.data.frame(predict(mod_eb_reweight,  newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("eb_preds_",.))
eb_preds2 <- as.data.frame(predict(mod_eb_reweight2, newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("eb_preds2_",.))
eb_preds3 <- as.data.frame(predict(mod_eb_reweight3, newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("eb_preds3_",.))

eb_full <- cbind(eb_preds, eb_preds2, eb_preds3)

eb_full %>% 
  ggplot(aes(x = 0:24)) +
    # Model 1
    geom_line(aes(y = eb_preds_fit), color = "blue", linewidth = 1) +
    geom_ribbon(aes(ymin = eb_preds_lwr, ymax = eb_preds_upr), fill = "blue", alpha = 0.2) +
  
    # Model 2
    geom_line(aes(y = eb_preds2_fit), color = "darkgreen", linewidth = 1) +
    geom_ribbon(aes(ymin = eb_preds2_lwr, ymax = eb_preds2_upr), fill = "darkgreen", alpha = 0.2) +
  
    # Model 3
    geom_line(aes(y = eb_preds3_fit), color = "firebrick", linewidth = 1) +
    geom_ribbon(aes(ymin = eb_preds3_lwr, ymax = eb_preds3_upr), fill = "firebrick", alpha = 0.2) +
  
    labs(
      title = "Predicted Wage Ratios by Unemployment Duration",
      subtitle = "From EB-weighted regressions: linear, quadratic, and cubic specifications",
      x = "Unemployment Duration (months)",
      y = "Predicted Wage Ratio"
    ) +
    theme_minimal()

## [1] "Diagnostic Tests for Entropy-balanced Reweighted Sample"

Propensity Score Weighting with GLM Estimator

# More conventional propensity scoring with a GLM estimator
glm <- weightit(
  formula = dwmosun ~ female + age + white + black + mixed + marst + educ_cat,
  data = df,
  method = "glm",
  s.weights = df$dwsuppwt
)

# All covariates are balanced at the mean with less tight threshold (0.001, very few variables pass with glm esimator)
bal.tab(glm, stats = c("m", "v"), thresholds = c(m = .01))
## Balance Measures
##                                 Type Diff.Target.Adj     M.Threshold
## female                        Binary         -0.0032 Balanced, <0.01
## age                          Contin.         -0.0057 Balanced, <0.01
## white                         Binary          0.0022 Balanced, <0.01
## black                         Binary         -0.0005 Balanced, <0.01
## mixed                         Binary         -0.0041 Balanced, <0.01
## marst                         Binary          0.0041 Balanced, <0.01
## educ_cat_Less than HS         Binary         -0.0042 Balanced, <0.01
## educ_cat_HS Diploma           Binary         -0.0003 Balanced, <0.01
## educ_cat_Associate's          Binary          0.0032 Balanced, <0.01
## educ_cat_Bachelor's           Binary          0.0023 Balanced, <0.01
## educ_cat_Postgraduate Degree  Binary         -0.0017 Balanced, <0.01
## 
## Balance tally for target mean differences
##                     count
## Balanced, <0.01        11
## Not Balanced, >0.01     0
## 
## Variable with the greatest target mean difference
##  Variable Diff.Target.Adj     M.Threshold
##       age         -0.0057 Balanced, <0.01
## 
## Effective sample sizes
##              Total
## Unadjusted 4747.86
## Adjusted   4637.07
df$glm_weight <- glm$weights

mod_glm_reweight <- lm(
  formula = ratio_wage ~ dwmosun + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = glm_weight
)
mod_glm_reweight2 <- lm(
  formula = ratio_wage ~ dwmosun + dwmosun2 + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = glm_weight
)
mod_glm_reweight3 <- lm(
  formula = ratio_wage ~ dwmosun + dwmosun2 + dwmosun3 + female + age + white + black + mixed + marst + educ_cat,
  data = df,
  weights = glm_weight
)

# Extract prediction intervals as data frames
glm_preds  <- as.data.frame(predict(mod_glm_reweight,  newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("glm_preds_",.))
glm_preds2 <- as.data.frame(predict(mod_glm_reweight2, newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("glm_preds2_",.))
glm_preds3 <- as.data.frame(predict(mod_glm_reweight3, newdata = newdata, interval = "confidence")) %>% rename_with(~paste0("glm_preds3_",.))

glm_full <- cbind(glm_preds, glm_preds2, glm_preds3)

glm_full %>% 
  ggplot(aes(x = 0:24)) +
    # Model 1
    geom_line(aes(y = glm_preds_fit), color = "blue", linewidth = 1) +
    geom_ribbon(aes(ymin = glm_preds_lwr, ymax = glm_preds_upr), fill = "blue", alpha = 0.2) +
  
    # Model 2
    geom_line(aes(y = glm_preds2_fit), color = "darkgreen", linewidth = 1) +
    geom_ribbon(aes(ymin = glm_preds2_lwr, ymax = glm_preds2_upr), fill = "darkgreen", alpha = 0.2) +
  
    # Model 3
    geom_line(aes(y = glm_preds3_fit), color = "firebrick", linewidth = 1) +
    geom_ribbon(aes(ymin = glm_preds3_lwr, ymax = glm_preds3_upr), fill = "firebrick", alpha = 0.2) +
  
    labs(
      title = "Predicted Wage Ratios by Unemployment Duration",
      subtitle = "From GLM-weighted regressions: linear, quadratic, and cubic specifications",
      x = "Unemployment Duration (months)",
      y = "Predicted Wage Ratio"
    ) +
    theme_minimal()

## [1] "Diagnostic Tests for Propensity Score Matching (GLM) Reweighted Sample"

Heckman Selection

Another option is a Heckman Selection correction though I do not think this addresses the particular selection concern we have where there are simply less observations in longer unemployment durations.

# Create selection indicator (1 if ratio_wage is observed)
df$observe_wage <- as.numeric(!is.na(df$ratio_wage))

# Define selection and outcome equations
selection_eq <- observe_wage ~ female + age + white + black + mixed + marst + educ_cat
outcome_eq  <- ratio_wage ~ dwmosun + female + age + white + black + mixed + marst + educ_cat
outcome_eq2 <- ratio_wage ~ dwmosun + dwmosun2 + female + age + white + black + mixed + marst + educ_cat
outcome_eq3 <- ratio_wage ~ dwmosun + dwmosun2 + dwmosun3 + female + age + white + black + mixed + marst + educ_cat 

# Run Heckman 
heckman_model <- selection(
  selection = selection_eq,
  outcome = outcome_eq,
  data = df,
  method = "2step",       
  weights = df$dwsuppwt   # Include weights from CPS
)

# Run Heckman 
heckman_model2 <- selection(
  selection = selection_eq,
  outcome = outcome_eq2,
  data = df,
  method = "2step",       
  weights = df$dwsuppwt   # Include weights from CPS
)

# Run Heckman 
heckman_model3 <- selection(
  selection = selection_eq,
  outcome = outcome_eq3,
  data = df,
  method = "2step",       
  weights = df$dwsuppwt   # Include weights from CPS
)

# Predict ratio_wage (corrected for selection)
preds <- predict(heckman_model, newdata = newdata, part = "outcome", type = "unconditional")
preds2 <- predict(heckman_model2, newdata = newdata, part = "outcome", type = "unconditional")
preds3 <- predict(heckman_model3, newdata = newdata, part = "outcome", type = "unconditional")


# Combine with original durations for plotting or inspection
newdata$predicted_ratio <- preds
newdata$predicted_ratio2 <- preds2
newdata$predicted_ratio3 <- preds3

ggplot(newdata, aes(x = dwmosun)) +
  geom_line(aes(y = predicted_ratio)) +
  geom_line(aes(y = predicted_ratio2)) +
  geom_line(aes(y = predicted_ratio3)) +
  labs(x = "Unemployment Duration (months)", y = "Predicted Wage Ratio", title = "Predicted Wage Ratio vs. Unemployment Duration") +
  theme_minimal()

Regression Results with Sample Reweighting

Heckman Correction Entropy Balanced Reweight GLM Reweight
Intercept 1.131*** 1.147*** 1.143***
(0.041) (0.033) (0.033)
Unemployment Duration (Months) -0.006*** -0.006*** -0.006***
(0.001) (0.001) (0.001)
Female 0.018 0.001 0.001
(0.014) (0.011) (0.011)
Age -0.007*** -0.002*** -0.002***
(0.002) (0.000) (0.000)
White -0.162* -0.027 -0.023
(0.074) (0.025) (0.025)
Black -0.125* -0.040 -0.036
(0.050) (0.030) (0.030)
Mixed -0.054 0.003 0.007
(0.055) (0.044) (0.044)
Married 0.003 0.005 0.004
(0.011) (0.011) (0.011)
High School -0.014 -0.014 -0.014
(0.019) (0.017) (0.017)
XOeduc_catAssociate's -0.078
(0.064)
Bachelor's Degree -0.217 0.054* 0.054*
(0.165) (0.023) (0.023)
Postgraduate Degree -0.479 0.083+ 0.086+
(0.330) (0.048) (0.047)
Inverse Mills Ratio 0.870+
(0.479)
educ_catAssociate's 0.007 0.006
(0.022) (0.022)
Num.Obs. 4870 4870 4870
R2 0.893 0.014 0.015
R2 Adj. 0.893 0.012 0.013
F 6.487 6.798
RMSE 0.37 0.37 0.37
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Job Tenure

We have information on the tenure spent at the last job which could impact the result. This could speak to the “adaptability” of individuals. Wage ratio seems to decrease (although not sure if meaningfully) with tenure at previous job.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `geom_smooth()` using formula = 'y ~ x'

Representation

Although the survey does provide sample weights which we use above, it’s still likely that those who are laid off might be systematically more susceptible to layoffs (lower-wage, low-skill occupation, male, etc). Below, some (very rough) graphs to indicate what the sample looks like.

Headline result: it seems the sample over-represents below-mean wage earners and women. Age looks reasonably accurate (in relation to a simple median though….have not checked spread). Have not yet checked match to educational attainment. Individuals with only a HS diploma is strong majority in sample - not sure how accurate this is (likely correlated with wage however…so this might be cause for concern and confirm a skewed sample in that sense).

If we wish to pursue this data, I could improve on the below but it will have to do for now.